package com.example.deepschool.repositories;

import com.example.deepschool.Model.Discussion;
import com.example.deepschool.Model.Pagination;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;


@Repository
@Mapper
public interface DiscussionRepository {
	
	/**
	 * 插入一条讨论记录。
	 *
	 * @param discussion 讨论对象
	 * @return 插入成功的记录数
	 */
	Integer insert (Discussion discussion);
	
	/**
	 * 根据ID删除一条讨论记录。
	 *
	 * @param id 讨论的ID
	 * @return 删除成功的记录数
	 */
	Integer delete (Long id);
	
	/**
	 * 根据ID查询一条讨论记录。
	 *
	 * @param id 讨论的ID
	 * @return 讨论对象
	 */
	Discussion selectById (Long id);
	
	/**
	 * 根据课程ID 进行分页 查询讨论记录
	 *
	 * @param courseId   课程ID
	 * @param pagination 分页对象。
	 */
	Discussion[] selectByCourseId (@Param("courseId") Long courseId, @Param("pagination") Pagination pagination);
	
	/**
	 * 根据课程ID、目标回复ID 进行分页 查询讨论记录
	 *
	 * @param courseId       课程ID
	 * @param toDiscussionId 目标回复ID
	 * @param pagination     分页对象。
	 */
	Discussion[] selectByCourseIdAndToDiscussionId (@Param("courseId") Long courseId, @Param("toDiscussionId") Long toDiscussionId, @Param("pagination") Pagination pagination);
	
	/**
	 * 根据课程ID、目标回复ID 查询讨论记录总数
	 *
	 * @param courseId       课程ID
	 * @param toDiscussionId 目标回复ID
	 */
	Integer selectCountByCourseIdAndToDiscussionId (@Param("courseId") Long courseId, @Param("toDiscussionId") Long toDiscussionId);
	
	/**
	 * 根据课程ID 查询讨论记录总数
	 *
	 * @param courseId 课程ID
	 */
	Integer selectCountByCourseId (@Param("courseId") Long courseId);
}
